Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/plyer/platforms/linux/battery.py 2.0.0 (cf698d96) Text, 2.96 KB

T8b949e'''
Module of Linux API for plyer.battery.
'''

Tff7b72from T7ee787math Tff7b72import Te6edf3floor
Tff7b72from T7ee787os Tff7b72import Te6edf3environ
Tff7b72from T7ee787osT7ee787.T7ee787path Tff7b72import Te6edf3existsTb4b4b4, Te6edf3join
Tff7b72from T7ee787subprocess Tff7b72import Te6edf3PopenTb4b4b4, Te6edf3PIPE
Tff7b72from T7ee787sbappT7ee787.T7ee787plyerT7ee787.T7ee787facades Tff7b72import Te6edf3Battery
Tff7b72from T7ee787sbappT7ee787.T7ee787plyerT7ee787.T7ee787utils Tff7b72import Te6edf3whereis_exe


Tff7b72class T56d364LinuxBatteryTb4b4b4(Te6edf3BatteryTb4b4b4)Tb4b4b4:
T8b949e'''
Implementation of Linux battery API via accessing the sysclass power_supply
path from the kernel.
'''

Tff7b72def Td2a8ff_get_stateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3status Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffisChargingTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4, Ta5d6ff"Ta5d6ffpercentageTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4}

Te6edf3kernel_bat_path Tff7b72= Te6edf3joinTb4b4b4(Ta5d6ff'Ta5d6ff/sysTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffclassTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffpower_supplyTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffBAT0Ta5d6ff'Tb4b4b4)
Te6edf3uevent Tff7b72= Te6edf3joinTb4b4b4(Te6edf3kernel_bat_pathTb4b4b4, Ta5d6ff'Ta5d6ffueventTa5d6ff'Tb4b4b4)

Tff7b72with Tffa657openTb4b4b4(Te6edf3ueventTb4b4b4) Tff7b72as Te6edf3fleTb4b4b4:
Te6edf3lines Tff7b72= Tb4b4b4[
Te6edf3lineTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3line Tff7b72in Te6edf3fleTff7b72.Td2a8ffreadlinesTb4b4b4(Tb4b4b4)
Tb4b4b4]
Te6edf3output Tff7b72= Tb4b4b4{
Te6edf3lineTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff=Ta5d6ff'Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4: Te6edf3lineTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff=Ta5d6ff'Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]
Tff7b72for Te6edf3line Tff7b72in Te6edf3lines
Tb4b4b4}

Te6edf3is_charging Tff7b72= Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_STATUSTa5d6ff'Tb4b4b4] Tff7b72== Ta5d6ff'Ta5d6ffChargingTa5d6ff'
Te6edf3total Tff7b72= Tffa657floatTb4b4b4(Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_CHARGE_FULLTa5d6ff'Tb4b4b4]Tb4b4b4)
Te6edf3now Tff7b72= Tffa657floatTb4b4b4(Te6edf3outputTb4b4b4[Ta5d6ff'Ta5d6ffPOWER_SUPPLY_CHARGE_NOWTa5d6ff'Tb4b4b4]Tb4b4b4)

Te6edf3capacity Tff7b72= Te6edf3floorTb4b4b4(Te6edf3now Tff7b72/ Te6edf3total Tff7b72* T79c0ff100Tb4b4b4)

Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffpercentageTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3capacity
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffisChargingTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3is_charging
Tff7b72return Te6edf3status


Tff7b72class T56d364UPowerBatteryTb4b4b4(Te6edf3BatteryTb4b4b4)Tb4b4b4:
T8b949e'''
Implementation of UPower battery API.
'''

Tff7b72def Td2a8ff_get_stateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# if no LANG specified, return empty string
Te6edf3old_lang Tff7b72= Te6edf3environTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4)
Te6edf3environTb4b4b4[Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4] Tff7b72= Ta5d6ff'Ta5d6ffCTa5d6ff'
Te6edf3status Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffisChargingTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4, Ta5d6ff"Ta5d6ffpercentageTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4}

T8b949e# We are supporting only one battery now
T8b949e# this will fail if there is no object with such path,
T8b949e# however it's safer than 'upower -d' which provides
T8b949e# multiple unrelated 'state' and 'percentage' keywords
Te6edf3dev Tff7b72= Ta5d6ff"Ta5d6ff/org/freedesktop/UPower/devices/battery_BAT0Ta5d6ff"
Te6edf3upower_process Tff7b72= Te6edf3PopenTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ffupowerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--show-infoTa5d6ff"Tb4b4b4, Te6edf3devTb4b4b4]Tb4b4b4,
Te6edf3stdoutTff7b72=Te6edf3PIPE
Tb4b4b4)
Te6edf3output Tff7b72= Te6edf3upower_processTff7b72.Td2a8ffcommunicateTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tff7b72.Td2a8ffdecodeTb4b4b4(Tb4b4b4)
Te6edf3environTb4b4b4[Ta5d6ff'Ta5d6ffLANGTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3old_lang
Tff7b72if Tff7b72not Te6edf3outputTb4b4b4:
Tff7b72return Te6edf3status
Te6edf3state Tff7b72= Te6edf3percentage Tff7b72= Tff7b72None

Tff7b72for Te6edf3line Tff7b72in Te6edf3outputTff7b72.Td2a8ffsplitlinesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Ta5d6ff'Ta5d6ffstateTa5d6ff' Tff7b72in Te6edf3lineTb4b4b4:
Te6edf3state Tff7b72= Te6edf3lineTff7b72.Td2a8ffrpartitionTb4b4b4(Ta5d6ff'Ta5d6ff:Ta5d6ff'Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)

Tff7b72if Ta5d6ff'Ta5d6ffpercentageTa5d6ff' Tff7b72in Te6edf3lineTb4b4b4:
Te6edf3percentage Tff7b72= Te6edf3lineTff7b72.Td2a8ffrpartitionTb4b4b4(Ta5d6ff'Ta5d6ff:Ta5d6ff'Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4[Tb4b4b4:Tff7b72-T79c0ff1Tb4b4b4]

T8b949e# switching decimal comma to dot
T8b949e# (different LC_NUMERIC locale)
Te6edf3percentage Tff7b72= Tffa657floatTb4b4b4(
Te6edf3percentageTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff,Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4)
Tb4b4b4)

Tff7b72if Te6edf3stateTb4b4b4:
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffisChargingTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3state Tff7b72== Ta5d6ff"Ta5d6ffchargingTa5d6ff"
Te6edf3statusTb4b4b4[Ta5d6ff'Ta5d6ffpercentageTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3percentage
Tff7b72return Te6edf3status


Tff7b72def Td2a8ffinstanceTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e'''
Instance for facade proxy.
'''
Tff7b72import T7ee787sys
Tff7b72if Te6edf3whereis_exeTb4b4b4(Ta5d6ff'Ta5d6ffupowerTa5d6ff'Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3UPowerBatteryTb4b4b4(Tb4b4b4)
Te6edf3sysTff7b72.Td2a8ffstderrTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ff"Ta5d6ffupower not found.Ta5d6ff"Tb4b4b4)

Tff7b72if Te6edf3existsTb4b4b4(Te6edf3joinTb4b4b4(Ta5d6ff'Ta5d6ff/sysTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffclassTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffpower_supplyTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffBAT0Ta5d6ff'Tb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3LinuxBatteryTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3BatteryTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────